//package com.allwees.data.analysis.stat.service.impl;
//
//import com.allwees.bs.core.model.stat.EStatType;
//import com.allwees.bs.core.model.stat.req.MonthlyStatReq;
//import com.allwees.bs.core.modelbase.constant.EPlatform;
//import com.allwees.core.common.util.DateUtil;
//import com.allwees.data.analysis.stat.EStatMode;
//import com.allwees.data.analysis.stat.dao.MonthlyStatDao;
//import com.allwees.data.analysis.stat.entity.MonthlyStatEntity;
//import com.allwees.data.analysis.stat.req.MonthlyQueryStatReq;
//import com.allwees.data.analysis.stat.service.MonthlyStatService;
//import com.allwees.data.analysis.stat.vo.MonthlyStatDetailVo;
//import com.allwees.data.analysis.stat.vo.MonthlyStatVo;
//import org.springframework.stereotype.Service;
//
//import java.util.Date;
//
///**
// * @author yangylsky
// * @since 2020-04-14
// */
//@Service
//public class MonthlyStatServiceImpl extends BaseStatServiceImpl<
//		MonthlyStatEntity,
//		MonthlyStatDetailVo,
//		MonthlyStatVo,
//		MonthlyStatDao,
//		MonthlyQueryStatReq> implements MonthlyStatService {
//
//	@Override
//	protected EStatMode statMode() {
//		return EStatMode.MONTHLY;
//	}
//
//    @Override
//    public void statAndSave(MonthlyStatReq req) {
//        int between = DateUtil.getMonthsBetween(req.getDateFrom(), req.getDateTo());
//        for(int i = 0; i < between; i++) {
//            stat(req.getStatType(), DateUtil.addMonths(req.getDateFrom(), i), DateUtil.addMonths(req.getDateFrom(), i + 1));
//        }
//    }
//
//    @Override
//    public void saveStat(MonthlyStatReq req) {
//        MonthlyStatEntity monthlyStat = MonthlyStatEntity.ofDefault(req.getStatType(), req.getDateTo());
//        monthlyStat.setValue(req.getCount().doubleValue());
//
//        for (EPlatform platform : EPlatform.values()) {
//            if(platform.isMock()) {
//                continue;
//            }
//            monthlyStat.setPlatform(platform);
//            saveStatToDb(monthlyStat);
//        }
//    }
//
//    @Override
//    protected MonthlyStatEntity defaultEntity(EStatType statType, Date dateFrom) {
//        return MonthlyStatEntity.ofDefault(statType, dateFrom);
//    }
//
//    @Override
//    protected void saveStatToDb(MonthlyStatEntity stat) {
//        stat.setValue(stat.getValue() == null ? (double) 0 : stat.getValue());
//        stat.setUuid(stat.uniqueId());
//        if (statDao.findByUuid(stat.getUuid()) == null) {
//        	statDao.create(stat);
//        } else {
//        	statDao.updateByUuid(stat, stat.getUuid());
//        }
//    }
//
//    @Override
//    protected String getSqlQueryDir() {
//        return "stat_common";
//    }
//}